import sun.management.counter.StringCounter;

import java.util.Scanner;

/**
 * // 注意类名必须为 Main, 不要有任何 package xxx 信息
 * public class Main {
 *     public static void main(String[] args) {
 *         Scanner in = new Scanner(System.in);
 *         // 注意 hasNext 和 hasNextLine 的区别
 *         while (in.hasNextInt()) { // 注意 while 处理多个 case
 *             int a = in.nextInt();
 *             int b = in.nextInt();
 *             System.out.println(a + b);
 *         }
 *     }
 * }
 */
public class day1 {
    /**\
     * 题目1 BC1 实践出真知
     * * 描述
     * 于老师经常告诉我们“学习编程最好的办法就是上机实践，因为你要对计算机下指令，想让计算机帮你干活，就得多和计算机‘交流’，实践才能出真知。”
     * 输入描述：
     * 本题没有输入
     * 输出描述：
     * Practice makes perfect!
     * @param args
     */
    public static void main1(String[] args) {
        System.out.println("Practice makes perfect!");
    }

    /**
     * 题目2：BC6 小飞机
     * 描述
     * KiKi学会了printf在屏幕输出信息，他想输出一架小飞机。请帮他编写程序输出这架小飞机。
     */
    public static void main2(String[] args) {
        System.out.println("     **     ");
        System.out.println("     **     ");
        System.out.println("************");
        System.out.println("************");
        System.out.println("    *  *    ");
        System.out.println("    *  *    ");
    }

    /**
     * 题目3: BC2 我是大V
     * * 描述
     * 每个人都想成为大V (VIP：Very Important Person)，
     * 但要一点一点积累才行，先从小v做起。要求输出由小写字母v组成的大V。
     */
    // 方式1
    public static void main3(String[] args) {
        System.out.println("v   v");
        System.out.println(" v v");
        System.out.println("  v");
    }

    // 方式2
    public static void main31(String[] args) {
        System.out.print("v   v\n v v\n  v");
    }

    /**
     * 题目4： BC3 有容乃大
     * 描述
     * 确定不同整型数据类型在内存中占多大（字节），输出不同整型数据类型在内存中占多大（字节）。
     */
    // 知识扩展 xxx数据类型.size 计算该数据类型所占空间的大小,单位是bit,如果需要转换为
    // byte(字节)的话,/8
    public static void main0(String[] args){
        System.out.println("byte所占空间的大小:"+Byte.SIZE+" bit");
        System.out.println("byte所占空间的大小"+Byte.SIZE/8+" byte");
        System.out.println("char所占空间的大小:"+Character.SIZE+" bit");
        System.out.println("char所占空间的大小:"+Character.SIZE/8+" byte");
        System.out.println("short所占空间的大小:"+Short.SIZE+" bit");
        System.out.println("short所占空间的大小:"+Short.SIZE/8+" byte");
        System.out.println("int所占空间的大小:"+Integer.SIZE+" bit");
        System.out.println("int所占空间的大小:"+Integer.SIZE/8+" byte");
        System.out.println("long所占空间的大小:"+Long.SIZE+" bit");
        System.out.println("long所占空间的大小:"+Long.SIZE/8+" byte");
        System.out.println("float所占空间的大小:"+Float.SIZE+" bit");
        System.out.println("float所占空间的大小:"+Float.SIZE/8+" byte");
        System.out.println("double所占空间的大小:"+Double.SIZE+" bit");
        System.out.println("double所占空间的大小:"+Double.SIZE/8+" byte");

    }
    // 解题
    public static void main4(String[] args){
        System.out.println("The size of short is "+Short.SIZE/8+" bytes.");
        System.out.println("The size of int is "+Integer.SIZE/8+" bytes.");
        System.out.println("The size of long is "+Long.SIZE/8+" bytes.");
        System.out.println("The size of long long is "+Long.SIZE/8+" bytes.");
    }


    /**
     * 题目5:BC7 缩短二进制
     * 我们处理的整数通常用十进制表示，在计算机内存中是以二进制补码形式存储，
     * 但通常二进制表示的整数比较长，为了便于在程序设计过程中理解和处理数据，
     * 通常采用八进制和十六进制，缩短了二进制补码表示的整数，但保持了二进制数的表达特点。
     * 请输出十进制整数1234对应的八进制和十六进制。
     *
     * 输入描述：
     * 无
     * 输出描述：
     * 十进制整数1234对应的八进制和十六进制（字母大写），用空格分开，并且要求，
     * 在八进制前显示前导0，在十六进制数前显示前导0X。
     */
    public static void main05(String[] args){
        System.out.printf("你好，呀%d",999);
    }
    // 解题方式
    public static void main5(String[] args){
        System.out.printf("%#o %#X",1234,1234);
    }


    /**
     * 题目六: BC19 反向输出一个四位数
     * * 描述
     * 将一个四位数，反向输出。
     * 输入描述：
     * 一行，输入一个整数n（1000 <= n <= 9999）。
     * 输出描述：
     * 针对每组输入，反向输出对应四位数。
     * 示例1
     * 输入：1234
     * 输出：4321
     */
    public static void main06(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();

        while(num != 0){
            System.out.print(""+num%10);
            num = num /10;
        }
    }

    // 解题方式2 : 通过 / 1000 取到数值的最后一个数值，/100 取到数值的最后一个数值，一次类推，
    public static void main6(String[] args){
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();

        System.out.print(""+num%10);
        System.out.print(""+num/10%10);
        System.out.print(""+num/100%10);
        System.out.print(""+num/1000);
    }


    /**
     *  题目七: BC28 大小写转换
     * * 输入描述：
     * 多组输入，每一行输入大写字母。
     * 输出描述：
     * 针对每组输入输出对应的小写字母。
     * 示例1
     * 输入：
     * A
     * B
     * 输出：
     * a
     * b
     */
    public static void main7(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 多组数据的输入
        while(scanner.hasNext()){ // 查看是否存在输入的数据
            char c = scanner.next().charAt(0);
            System.out.println(""+(char)(c+32)); // 强制转换为chars数据类型

        }
    }
}
